iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
Modern Web

html/css/js的各種操作系列 第 12

[day12]認識position/outline

  • 分享至 

  • xImage
  •  

position

position是定位用的屬性,預設為static當作一般物品,而其他分別有
relation:相對定位元素,會以他在文本的位子來做位移,可使用top/left去移動,可使after/before繼承他。
absolute:絕對定位元素,如果沒設top/left會以本身的文本位子當起始點,他的top/left會以整個網頁由左上角為(0,0)來定位。
fixed:絕對定位元素,如果沒設top/left會以本身的文本位子當起始點,但他的特殊是在會存在於網頁上,會隨者網頁一起移動,他的定位是以設備的畫面而非網頁,他的top/left也是以左上當作(0,0)
sticky:黏性定位元素,黏性?顧名思義便是黏在一個物體上,假設你給他黏在body上,那麼作用就等同於fixed,通常是黏在div上,不過他的top/left較為特殊,他的top是以設備的視窗大小當作參照去移動,left也是,並且當超過它黏的容器區塊便會停止。

下面程式可以拿去改參數玩看看

<style>
        .position_img {
            position: absolute;
            top: 40px;
            left: 40px;
        }

        .position_img2 {
            position: sticky;
            top: 40px;
        }
</style>

<body class="d-flex justify-content-center flex-wrap">
    <div class="w-100" style="background-color: black;height: 50px;">
    </div>
    <div class="w-100 d-flex justify-content-center">
        <img class="px-2" src="https://fakeimg.pl/100x100/ffff00">
        <img class="position_img px-2" src="https://fakeimg.pl/100x100/ff00ff">
        <img class="px-2" src="https://fakeimg.pl/100x100/00ffff">
    </div>
    <div style="background-color: black;width: 50px;height: 1000px;">
        <img class="position_img2 px-2" src="https://fakeimg.pl/100x100/ff0000">
    </div>
</body>

可能會想跟css的動畫有甚麼關係?
雖然主要是absolute,因為他可以脫離文本使得你在做動畫時,不會讓你的好鄰居有排版跑掉的問題,且他的預設區域,就是他的文本對應位子很好用。
如果你看到你的寬高設定100%卻吃整個螢幕,代表你的父元素沒有設定成relation,所以他才沒有繼承到該物件的一些東西,順帶一提某些物件例如border-radius:inherit,這個inherit便是讓after/before可以繼承物件的邊框,繼承這部分其實挺重要的。

outline

outline跟border的不同在於,border會吃實際的位子outline則是不會

怎麼只看到border?我有打拉,這就是我說的outline他是超出文本的存在,類似上面再講的absolute,那樣你可能就會想那不就會把其他排的東西壓過去?你答對一半,他是變成別人的背景了

那怎麼不直接用border呢?如上所說他會吃實際的格子可能會導致你內部的文字有跑版情況,但若使用outline就不會了
只要留足夠的位子給他即可

而線的樣式有
1.solid實線
2.dotted虛線
3.dashed點線
下面的線要比較寬才明顯
4.double雙線
5.groove凹槽線
6.ridge脊線
7.inset內嵌線
8.outset外凸線

對了outline的角要削成圓的還是一樣要用border-radius唷。

程式碼

<style>
        .outline_test {
            outline: 1rem groove red;
            border-radius: 2px;
        }
</style>
<body class="d-flex justify-content-center flex-wrap">
    <div class="outline_test" style="background-color: black; height: 200px;width: 300px; margin-top: 50px;">
    </div>
    <span class="text-center w-100">123</span>
</body>

今天就這樣啦,謝謝觀看~


上一篇
[day11] html的before與after
下一篇
[day13]認識 will-change/transform
系列文
html/css/js的各種操作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言